/*
 * OrQuery.cpp
 *
 *  Created on: 2020年12月13日
 *      Author: san
 */

#include "OrQuery.h"

TextQuery::QueryResult OrQuery::eval(const TextQuery &text)
{
	// 通过 Query 成员lhs 和rhs进行的虚调用
	// 通过eval返回每个运算对象的QueryResult
	QueryResult right = rhs.eval(text), left = lhs.eval(text);
	// 将左侧的查询结果拷贝到set中
	auto ret_lines = std::make_shared<std::set<line_no>>(left.begin(), left.end());

	// 插入右侧运算对象所得的行号
	ret_lines->insert(right.begin(), right.end());
	// 返回一个新的QS
	return QueryResult(rep(), ret_lines, left.get_file());
}

